package com.sc.nft.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sc.nft.entity.SysMember;
import com.sc.nft.entity.WxMiniUserInfo;
import com.sc.nft.entity.vo.WxMiniUserWithdrawalsVO;
import com.sc.nft.entity.vo.mall.MallUserWithdrawalsRecordAdminPage;
import com.sc.nft.enums.MallWithdrawType;
import com.sc.nft.enums.WithdrawalsStatusEnum;
import com.sc.nft.exception.GlobalException;
import com.sc.nft.sup.PageResult;

import java.math.BigDecimal;
import java.util.Date;

/**
 * <p>
 * 用户提现记录表 服务类
 * </p>
 *
 * @author author
 * @since 2024-05-20
 */
public interface MallUserWithdrawalsRecordService {

    /**
     * 用户申请提现
     *
     * @param amount
     * @param wxMiniUserInfo
     * @param withdrawType
     */
    void userApplicationForWithdrawal(BigDecimal amount, WxMiniUserInfo wxMiniUserInfo, MallWithdrawType withdrawType, String actualName) throws GlobalException;

    /**
     * 获取提现记录
     *
     * @param startTime
     * @param endTime
     * @param userTel
     * @param withdrawalsStatus
     * @param pageNo
     * @param pageSize
     * @return
     */
    Page<MallUserWithdrawalsRecordAdminPage> getAdminPage(Date startTime, Date endTime, String userTel, WithdrawalsStatusEnum withdrawalsStatus, Integer pageNo, Integer pageSize);

    /**
     * 用户提现记录
     *
     * @param wxMiniUserId
     * @param pageNo
     * @param pageSize
     * @return
     */
    Page<WxMiniUserWithdrawalsVO> getUserWithdrawalsRecord(Long wxMiniUserId, Integer pageNo, Integer pageSize);

    /**
     * 审核通过
     *
     * @param id
     * @param remark
     * @return
     */
    void pass(Long id, String remark, SysMember sysMember);

    /**
     * 审核拒绝
     *
     * @param id
     * @param remark
     * @return
     */
    void turnDown(Long id, String remark, SysMember sysMember);
}
